package com.heima.common.tess4j;

import lombok.Getter;
import lombok.Setter;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.awt.image.BufferedImage;

@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "tess4j")//用于从配置文件中读取tess4j前缀的属性，并将这些属性绑定到类的成员变量上
//这个类是tess4j的客户端，用于对图片进行ocr识别，即识别图片中的文字内容，再审核是否违法违规
//因为当前模块没有扫描配置类，所以需要在resources目录下的spring.factories文件中配置该类的全类名，才能被spring管理
public class Tess4jClient {

    //存储Tesseract字体库的路径
    private String dataPath;
    //指定OCR识别的语言
    private String language;

    public String doOCR(BufferedImage image) throws TesseractException {
        //创建Tesseract对象
        ITesseract tesseract = new Tesseract();
        //设置字体库路径
        tesseract.setDatapath(dataPath);
        //中文识别
        tesseract.setLanguage(language);
        //执行ocr识别,使用doOCR方法执行OCR识别，将图片中的文字识别为字符串
        String result = tesseract.doOCR(image);
        //替换回车和tal键,通过正则表达式替换识别结果中的回车符和换行符为连字符-，并去除所有空格，使结果呈现在一行中
        result = result.replaceAll("\\r|\\n", "-").replaceAll(" ", "");
        return result;
    }
}